package com.qdlc.p2p.biz.tpp;

import java.util.List;

import com.qdlc.p2p.dal.dto.MemberInfos;
import com.qdlc.p2p.dal.dto.UserIdentify;
import com.qdlc.p2p.dal.model.AccountBankModel;
import com.qdlc.p2p.dal.model.TppModel;

/**
 * 接口基类
 * @author RDuser
 *
 */
public interface TppBaseInterface {
	
	/**
	 * 开户
	 * @param model
	 * @return
	 */
	Object tppRegister(TppModel model);
	
	/**
	 * 发标
	 * @param model
	 * @return
	 */
	Object tppAddBorrow(TppModel model);
	
	/**
	 * 充值
	 * @param model
	 * @return
	 */
	Object tppRecharge(TppModel model);
	
	/**
	 * 商户充值
	 * @param model
	 * @return
	 */
	Object tppMerchantRecharge(TppModel model);
	
	/**
	 * 接口取现
	 * @param model
	 * @return
	 */
	Object tppCash(TppModel model);
	
	/**
	 * 商户取现
	 * @param model
	 * @return
	 */
	Object tppMerchantCash(TppModel model);
	
	/**
	 * 取现审核
	 * @param model
	 * @return
	 */
	Object tppVerifyCash(TppModel model);
	
	/**
	 * 绑卡
	 * @param model
	 * @return
	 */
	Object tppAddBank(TppModel model);
	
	
	/**
	 * 删除银行卡
	 * @param model
	 * @return
	 */
	Object tppDeleteBank(TppModel model);
	
	/**
	 * 投标/代收
	 * @param model
	 * @return
	 * @param
	 */
	Object tppTender(TppModel model);
	
	
	/**
	 * 投标
	 * @param model
	 * @return
	 */
	Object tppAddTender(TppModel model);
	
	/**
	 * 资金冻结
	 * @param model
	 * @return
	 */
	Object tppFreeze(TppModel model);
	
	/**
	 * 解冻
	 * @param model
	 * @return
	 */
	Object tppUnFreeze(TppModel model);
	
	/**
	 * 放款
	 * @param model
	 * @return
	 */
	Object tppLoan(TppModel model);
	
	/**
	 * 还款
	 * @param model
	 * @return
	 */
	Object tppRepayment(TppModel model);
	
	/**
	 * 自动投标计划或授权
	 * @param model
	 * @return
	 */
	Object tppAutoTenderPlan(TppModel model);
	
	/**
	 * 关闭自动投标计划
	 * @param model
	 * @return
	 */
	boolean tppCloseAutoTenderPlan(TppModel model);
	
	/**
	 * 自动投标操作
	 * @param model
	 * @return
	 */
	Object tppAutoTender(TppModel model);
	
	/**
	 * 查询用户账户余额
	 * @param model
	 * @return
	 */
	Object tppQueryBalance(TppModel model);

	/**
	 * 查询平台账户余额
	 * @return
	 */
	Object tppQueryWebBalance();
	
	/**
	 * 查询新浪收支明细
	 * @param model
	 * @return
	 */
	Object tppQueryAccountDetails(TppModel model);
	
	/**
	 * 查询新浪收支明细并且返回相关分页信息
	 * @param model
	 * @return
	 */
	Object tppQueryAccountDetailsPagination(TppModel model);
	
	/**
	 * 查询存钱罐基金收益率
	 * @param model
	 * @return
	 */
	Object tppQueryFundYield(TppModel model);
	
	/**
	 * 查询用户绑定银行卡
	 * @param model
	 * @return
	 */
	Object tppQueryUserBankCard(TppModel model);
	
	
	/**
	 * 查询用户绑定银行卡 列表
	 * @param model
	 * @return
	 */
	List<AccountBankModel> tppQueryUserBankCardList(TppModel model);
	
	/**
	 * 用户登录
	 * @param model
	 * @return
	 */
	Object tppUserLogin(TppModel model);
	
	/**
	 * 前台用户转帐（用户->用户）
	 * @param model
	 * @return
	 */
	Object tppUserTransfer(TppModel model);
	
	/**
	 * 用户付款给商户（用户->平台）
	 * @param model
	 * @return
	 */
	Object tppUserPay(TppModel model);
	
	/**
	 * 交易状态查询
	 * @param model
	 * @return
	 */
	Object tppQueryTransStat(TppModel model);
	
	/**
	 * 第三方理财功能接口
	 * 例如：汇付生利宝
	 * @param model
	 * @return
	 */
	Object tppFssTrans(TppModel model);
	
	/**
	 * 第三方商户给用户转账接口
	 * 
	 * @param model
	 * @return
	 */
	Object tppTransfer(TppModel model);

	/**
	 * 第三方债权转让
	 * @param tppModel
	 * @return
	 */
	Object tppBondTender( TppModel tppModel);

	/**
	 * 流转标投标
	 * @param model
	 * @return
	 */
	Object tppAddFlowTender(TppModel model);

	/**
	 * 授权
	 * @param model
	 * @return
	 */
	Object tppLoanAuthorize(TppModel model);
	
	/**
	 * 第三方实名接口
	 * @param model
	 * @return
	 */
	Object tppRealName(TppModel model);
	
	/**
	 * 
	 * 第三方 代收
	 * @param model
	 * @return
	 * @param
	 */
	Object tppCollectTrade(TppModel model);
	
	/**
	 * 
	 * 第三方 代付
	 * @param model
	 * @return
	 * @param
	 */
	Object tppPayTrade(TppModel model);
	
	/**
	 * 第三方退款
	 * @param model
	 * @return
	 * @param
	 */
	Object tppRefund(TppModel model);
	
	/**
	 * 查询银行卡信息
	 * @param model
	 * @return
	 * @param
	 */
	Object tppQueryBankCard(TppModel model);

	/**
	 * 绑定认证信息
	 * @param model
	 * @param userIdentify 
	 * @param memberInfo 
	 * @return
	 * @param
	 */
	Object bindingVerify(TppModel model, UserIdentify userIdentify, MemberInfos memberInfo);

	/**
	 * 经办人信息录入
	 * @param model
	 * @param memberInfo 
	 * @return
	 * @param
	 */
	Object tppMemberAgent(TppModel agentModel, MemberInfos memberInfo);


}
